#ifndef CAFFEINE_COMPONENTS_GRAPHICSCOMPONENT_HPP
#define CAFFEINE_COMPONENTS_GRAPHICSCOMPONENT_HPP

#include "Components/IComponent.hpp"
//#include "Components/ICompositor.hpp"
#include "Components/KineticsComponent.hpp"
#include "Components/Message.hpp"
#include "Graphics/Colour.hpp"
#include "Graphics/Texture.hpp"

#include "SFML/Graphics/RenderWindow.hpp"
#include "SFML/Graphics/Sprite.hpp"

namespace Components
{
	class GraphicsComponent : public IComponent
	{
	public:
		GraphicsComponent( /*ICompositor &comp,*/ KineticsComponent &kin );
		virtual ~GraphicsComponent( void );

		virtual void Update( void );
		virtual void RecieveMessage( const Message &msg );

		virtual void SetColour( const Graphics::Colour &colour );
		virtual void SetSize( const Math::Vectorf &size );
		virtual void SetTexture( const Graphics::Texture &tex );
		virtual void SetVisible( const bool setVis = true );
	private:
		KineticsComponent &kinetics;
		bool visible;
		
		sf::RenderWindow &renderWnd;
		sf::Sprite sprite;
	};
}

#endif //CAFFEINE_COMPONENTS_GRAPHICSCOMPONENT_HPP